package main

import (
	"ci-control-backend/common"
	"ci-control-backend/common/redis"
	"ci-control-backend/model"
	"ci-control-backend/router"
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/joho/godotenv"
	"github.com/sirupsen/logrus"
	"os"
)

func main() {
	// 初始化日志组件
	common.SetupLogger()
	// 加载.env文件
	if err := godotenv.Load(".env"); err != nil {
		logrus.Errorln("加载.env文件失败:", err)
		os.Exit(1)
	}
	// 初始化数据库
	if err := model.Setup(); err != nil {
		logrus.Error(fmt.Sprintf("初始化数据库失败: %+v", err))
		os.Exit(1)
	}
	// 初始化Redis
	if err := redis.InitClient(); err != nil {
		logrus.Errorf("初始化Redis失败: %+v", err)
		os.Exit(1)
	}
	// 获取监听端口
	port := os.Getenv("PORT")
	// 获取一个默认的gin服务器
	server := gin.Default()
	// 加载session中间件
	router.SetupSession(server)
	// 加载全局异常拦截器
	router.SetupRecover(server)
	// 设置路由
	router.SetupRoutes(server)
	// 启动web服务器
	if err := server.Run(":" + port); err != nil {
		logrus.Errorf("启动服务器失败: %+v", err)
		os.Exit(1)
	}
}
